/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package puntoventa.modelo;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author infor
 */
@Entity
@Table(name = "ventacabecera", catalog = "pv", schema = "public")
@NamedQueries({
    @NamedQuery(name = "Ventacabecera.findAll", query = "SELECT v FROM Ventacabecera v"),
    @NamedQuery(name = "Ventacabecera.findByIdVentacabecera", query = "SELECT v FROM Ventacabecera v WHERE v.idVentacabecera = :idVentacabecera"),
    @NamedQuery(name = "Ventacabecera.findByFechaVentacabecera", query = "SELECT v FROM Ventacabecera v WHERE v.fechaVentacabecera = :fechaVentacabecera"),
    @NamedQuery(name = "Ventacabecera.findByIdCliente", query = "SELECT v FROM Ventacabecera v WHERE v.idCliente = :idCliente"),
    @NamedQuery(name = "Ventacabecera.findByEstadoVentacabecera", query = "SELECT v FROM Ventacabecera v WHERE v.estadoVentacabecera = :estadoVentacabecera")})
public class Ventacabecera implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_ventacabecera")
    private Integer idVentacabecera;
    @Column(name = "fecha_ventacabecera")
    @Temporal(TemporalType.DATE)
    private Date fechaVentacabecera;
    @Column(name = "id_cliente")
    private Integer idCliente;
    @Column(name = "estado_ventacabecera")
    private String estadoVentacabecera;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idVentacabecera")
    private List<Ventadetalle> ventadetalleList;

    public Ventacabecera() {
    }

    public Ventacabecera(Integer idVentacabecera) {
        this.idVentacabecera = idVentacabecera;
    }

    public Integer getIdVentacabecera() {
        return idVentacabecera;
    }

    public void setIdVentacabecera(Integer idVentacabecera) {
        Integer oldIdVentacabecera = this.idVentacabecera;
        this.idVentacabecera = idVentacabecera;
        changeSupport.firePropertyChange("idVentacabecera", oldIdVentacabecera, idVentacabecera);
    }

    public Date getFechaVentacabecera() {
        return fechaVentacabecera;
    }

    public void setFechaVentacabecera(Date fechaVentacabecera) {
        Date oldFechaVentacabecera = this.fechaVentacabecera;
        this.fechaVentacabecera = fechaVentacabecera;
        changeSupport.firePropertyChange("fechaVentacabecera", oldFechaVentacabecera, fechaVentacabecera);
    }

    public Integer getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(Integer idCliente) {
        Integer oldIdCliente = this.idCliente;
        this.idCliente = idCliente;
        changeSupport.firePropertyChange("idCliente", oldIdCliente, idCliente);
    }

    public String getEstadoVentacabecera() {
        return estadoVentacabecera;
    }

    public void setEstadoVentacabecera(String estadoVentacabecera) {
        String oldEstadoVentacabecera = this.estadoVentacabecera;
        this.estadoVentacabecera = estadoVentacabecera;
        changeSupport.firePropertyChange("estadoVentacabecera", oldEstadoVentacabecera, estadoVentacabecera);
    }

    public List<Ventadetalle> getVentadetalleList() {
        return ventadetalleList;
    }

    public void setVentadetalleList(List<Ventadetalle> ventadetalleList) {
        this.ventadetalleList = ventadetalleList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idVentacabecera != null ? idVentacabecera.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Ventacabecera)) {
            return false;
        }
        Ventacabecera other = (Ventacabecera) object;
        if ((this.idVentacabecera == null && other.idVentacabecera != null) || (this.idVentacabecera != null && !this.idVentacabecera.equals(other.idVentacabecera))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "puntoventa.formulario.Ventacabecera[ idVentacabecera=" + idVentacabecera + " ]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
    
}
